{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 过拟合与欠拟合 与 决策树剪枝"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from ML.decision_tree import DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 过拟合与欠拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = np.loadtxt('x.txt')\n",
    "X = X[:, :2]\n",
    "y = np.loadtxt('y.txt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[y==0, 0], X[y==0, 1])\n",
    "plt.scatter(X[y==1, 0], X[y==1, 1])\n",
    "plt.scatter(X[y==2, 0], X[y==2, 1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from ML.model_selection import train_test_split\n",
    "x_train, x_test, y_train, y_test = train_test_split(X, y, seed=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "d=0, v=4.85, g=0.6571619514368456, l=None"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt_clf = DecisionTreeClassifier(max_depth=999999999)\n",
    "dt_clf.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8938053097345132"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt_clf.accuracy_rate(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8648648648648649"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt_clf.accuracy_rate(x_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_decision_boundary(X, y, predict_fun, step=0.1):\n",
    "    x_min = X[:, 0].min() - 0.5\n",
    "    x_max = X[:, 0].max() + 0.5\n",
    "    y_min = X[:, 1].min() - 0.5\n",
    "    y_max = X[:, 1].max() + 0.5\n",
    "    \n",
    "    x_mesh, y_mesh = np.meshgrid(np.arange(x_min, x_max, step), np.arange(y_min, y_max, step))      # 画网格\n",
    "    labels = predict_fun(np.concatenate([x_mesh.reshape(-1, 1), y_mesh.reshape(-1, 1)], axis = 1))        # 获取预测值\n",
    "    z = labels.reshape(x_mesh.shape)         # 将预测值转为与x_mesh相同的维度\n",
    "    \n",
    "    plt.contourf(x_mesh, y_mesh, z, cmap = plt.cm.Spectral)         # 画梯度图\n",
    "    \n",
    "    plt.scatter(X[:, 0], X[:, 1], c=y)                # 绘制散点图\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(x_train, y_train, lambda x: dt_clf.predict(x), step=0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "dt_clf.show_tree()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 决策树剪枝"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1、设置最大深度<br>\n",
    "2、设置最小叶片数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XmYXGWV+PHvubfW3rMnnYWEJIQQQkgIARIIq4AKuKEoorjiMu4z7o7+hhkdZ8ZxRUUGRURcEDdUdkHZkbCFEEKAkJB9771rufee3x+30umlqrrT3ZXurj6f5+knSd/trUrVqVvvPfccUVWMMcaUF2eoB2CMMWbwWXA3xpgyZMHdGGPKkAV3Y4wpQxbcjTGmDFlwN8aYMmTB3RhjypAFd2OMKUMW3I0xpgxFhurAdW5MJ0eTQ3V4Y4wZkZ5PN+1R1Qm9rTdkwX1yNMk1M08dqsMbY8yIdPrzt27qy3o2LWOMMWXIgrsxxpQhC+7GGFOGLLgbY0wZsuBujDFlyIK7McaUIQvuxhhThiy4G2NMGepzcBcRV0SeFJE/51n2LhHZLSJP5X7eN7jDNMYYcygO5Q7VjwPPATUFlv9aVT8y8CEZY4wZqD6duYvINOC1wLWlHY4xxpjB0NdpmW8DnwGCIuu8SURWi8jNIjI93woicoWIrBKRVQ1+5lDHaowxpo96De4icgGwS1UfL7Lan4CZqnoccBdwfb6VVPUaVV2qqkvr3Fi/BmyMMaZ3fTlzXwFcJCIbgV8BZ4nIzzuvoKp7VTWd++e1wAmDOkpjjDGHpNfgrqqfV9VpqjoTeCtwj6pe1nkdEZnS6Z8XEV54NcYYM0T6Xc9dRK4EVqnqLcDHROQiwAP2Ae8anOEZY4zpj0MK7qr6N+Bvub9/udPvPw98fjAHZowxpv/sDlVjjClDFtyNMaYMWXA3xpgyZMHdGGPKkAV3Y4wpQxbcjTGmDFlwN8aYMmTB3RhjypAFd2OMKUMW3I0xpgxZcDfGmDLU78JhxvTGV3iq0eWZpgiuwJI6j2OqfESGemTGlD8L7qYkAoUbt8TZlnLIahjNt6YcNlR7XDg5O8SjM6b82bSMKYkXWx22dwrsAFkV1jRH2J22U3djSs2CuymJDW0uGc0fxDe1u4d5NMaMPhbcTUlUuoqL9vi9A1S4PX9vjBlcFtxNSRxXk//CqSMwt9I//AMyZpSx4G5KojaqvLk+TcJRYo4SE6U6EnDZtBRRe9UZU3KWLWNKZk5lwKdmt7M95eCKMjmulgZpzGFiwd2UlCswLRkM9TCMGXXsC7IxxpQhC+7GGFOGLLgbY0wZsuBujDFlyIK7GZFUodWDjF2rNSavPmfLiIgLrAK2quoF3ZbFgZ8BJwB7gUtUdeMgjtOYDi+1Ovx5Z4xWP8yrnFfpc8HkDHE7VTGmw6G8HT4OPFdg2XuB/ao6B/gW8F8DHZgx+exMCzdti9PkOfgq+Co83+py87b4UA/NmGGlT8FdRKYBrwWuLbDK64Drc3+/GThbxG5XMYPv4X0R/G6laXwVXml32J+1l5wxB/T1zP3bwGeAQjOcU4HNAKrqAY3AuO4ricgVIrJKRFY1+Jl+DNeMdvuyDkrPIO4KNFpwN6ZDr8FdRC4Adqnq4wM9mKpeo6pLVXVpnRsb6O7MKDQ9GeStNukpTIjZ1VVjDujLmfsK4CIR2Qj8CjhLRH7ebZ2twHQAEYkAtYQXVo0ZVCeP8XKFxw4G+KgoJ9R6VFoxDWM69BrcVfXzqjpNVWcCbwXuUdXLuq12C3B57u8X59axot2jRIsXZrDsOgwdlqojyvtmpFhQ5VPhKmOjAedMyHLuBGvdZ0xn/T7XEZErgVWqegvwY+AGEXkR2Ef4IWDKnCrctTvKqsYIEQn7pk6IB7xtapqKEjZbGhNT3lhv12yMKeaQgruq/g34W+7vX+70+xTw5sEcmBn+Vje5PNEYyaUkhr/bkXL4w/Y4l05LD+3gjBnl7LYP02+P7I92aYANECBsbHdos2ZLxgwpC+6m31IFklMcIO1bWqIxQ8mCu+m3uZU+Tp60xLij1EXteroxQ8mCu+m308ZlSbpKRMJALihRUS6YlLF2esYMMcsMHkXWNjusboyQcJXTx2UZM8D7yKoj8MGZKVY1RNjY5lIXDThpjMek+MDP2gOFF1pd9maE8bGAOZUBjn1gmD5adEYG/e57kKCJSOY5hIBsdB7qju3bDjTA9V7G9bYTOHV4saNBhkm4jN/ap9WGyWhNKQUBXL0pzt7swS9qzzRHOHt8luVjvQHtu8KFleM8Vo4b2H46a/Xgus0JWj3BU4gIVEWUd89IlTTF0pSPj73x/cy/YQ0fP/dmFEFQYtzNzx88l5v+cXbRbePRNP99ydXMGL+DiOuR8aJ42dv5xI0fZWdjj6oqw5ZNy4wC9+2L5AK7dPn5657osKyHftuuGI1ZIaNCQPhnQ1a4c5eVrDB9UxNp4ePn3kw86pGIZolHPeJRj7evuIsjxu0ouu2lp9zNrAnbqIhliLgBFfE0tRUtfPa1vzhMox8cFtxHgScbI5Cn2BbAY/uH15c3VXi+xSWgZ4rlcy122m76ZnHNcwTaM7xFHI+VRz9ZdNuzFzxOPNr1m6jrKEdN2UxlvH1Qx1lKFtxHuZGU0zKSxmqGlqCI9HzFiIDjFH8lOXm268uy4caC+yiwsNqnUGhcWjt4c+WDQQTmVPpIt/E6KPMq7c4o0zdPNR2dN7hn/Qj3P7+o6Lb3rl1Mxuv6jTYIhA276mlOVQzqOEvJgvsocNb4LDWuEgb4gz+njc2SGF6zMgC8emKWKleJ5d6cMVGqIsp5E62ejOmbBq+Ga+65iHQ2QtZ38HwhlY3yu1Ur2bBratFtb3zoXLbuH09bOrzG056J0ZJO8j9/edvhGPqgGYZvbTPYHAc+PDPFbbuiPN8SIeYoZ03IsLCmb1dT92eEVQ0R9maFI5IBi2s9Ernp77QPTzVF2NjmMCaqLK3zGBsb2FfXmqjykVkpnmtx2ZNxmBALOLrKJ2KnIuYQ/PmpFTy+cR6nzXuaiOPz0AsL2bhnSq/btWUSfPinn+Kk2WuZO3kLOxvH8vd1x5PKjqxWjhbcRwFf4YatcXalHbIqpH3488446SDD0rriUx2b2hx+uTWOr+FFzZfblEf2R3j/ESkEuPaVBG2+4KngoDzRGOGSqWlmVQwsDSfiwMIaH7CpGNN/2xvGc9OjxVMf8wnU5eEXF/LwiwtLMKrDw86FRoE1TW5HYAdQwmB81+4Y6SKxUxVu2REjm0tJBPBUaPOF+/ZGeWBflBYv3BeEwT+rwi07Ylg1f2OGlgX3UWBts9ujeiOEfUdfaS/8EmjxhZY8BcAChOdbXNblSVkEaPeFBs9uJzVmKNm0zCgQzo8r3XPdVSFe5OM9KlrwDDzmhB8O+QTQcTHUGDM07Mx9FDihziPaIxArMUeZliw8N55w4YiKoEflx6goJ9Z5nFiXJSo9UxanJQLrZ2rMELPgPgrMSAasHJfFFSXuhEG90lUunZbutRjX6yenGR8LiEqYmhgR5egqj6V1HktqfRZUe7i5ZVFRxsWUN06xLkzGDDU7vyqRjW0O9+2Nsj8rTIkHnD4+OyjVEovZnhL+vjfKzrTDuJiyclyWGbkz8+VjPY6v9XilzSXuKkck+1ZlsTICVxyRZnvaoSErTEkEjOlUq/3CyVlOG+exPeVQE1HqE4GV+y1Dp35zOufd/dqi69SP2c07lt/BsdNeZndLLb9+5BwefemYwzTCbm4fmsMOJxbcS+C5Zpc/7Ih1ZJE0ecKGNpfLp6eYkihNgN/c7nDjljhZBRCavPB3b65PM6cyDPAVLhxdfeiphSJQnwioT+RfXhdV6qKWsjia1Y/ZzVXv/BaJaAbXUSbWNvCFC3/Gj+69iFufXj7UwxuVbFpmkKnCHbujHYE9JGQV7t5duqqGd+0+0M/04HE9FW63SormMHjH8juIR8LAfkAiluW9p/+FiDO8SlyMFhbcB1k6gNa8aYDCtlTpnu4d6fz7bsgKviWumBJbMO1lIm7PF5rrBEys3T8EIzIW3AdZsRTBqkjpomxlnjcWQNSx/2RTenua6/L+3nUCGtuqDvNoDNj7ftA5AifUeh19RQ+IirJibLZkx10+xuuRlhgV5aS6rF3gNCX3y0fOIZWJdvldOhvhgfULaU0nh2hUo5sF9xI4e0KWRTVhgD+QInjq2CyLakp30XFpnccpY8K882guZXFxbc/2d14Qtt3LR5WSlA0o1X7N8PHYhvlcfc9FtKQStGdiZLwID76wkG/dfslQD23U6jVbRkQSwH1APLf+zar6lW7rvAv4H2Br7ldXqeq1gzvUkcMReM2kLGdPyNLqCTURLXlFQxEYGwvz2Ft8IenAuNjB4gDPNjn8aeeBbBoYHw24fHqaigi0+3D7rhhrm12UMC/+tZMyjBtgdcf9GeEvu2JsbHMQ4Ogqn1dPylgf1DJ12+rl3LVmGRNrGmhsr7Qz9iHWl5CTBs5S1UXA8cD5InJynvV+rarH535GbWDvLO6EAfdwlKpd2+Tyl50xWvywV2p7INy9O8aqxghb2h1+t+NgmiQIe7IOP9iYRBV+tjnO2uawTowibGp3+MkrCdoH8EUjHcBPNifY2OaghIXH1rW4XL85YWfxZcwLImxrGG+BfRjoNexoqCX3z2jux96ew8y9e6M9ioNlNazeePuuA3OhXdMz2wN4aL9LQ9bpVgBM8BRWN/X/NohnGiNkg7AC5QEBQlNWeLnNZgONKbU+vctExBWRp4BdwF2q+mie1d4kIqtF5GYRmV5gP1eIyCoRWdXgW1edwdRYoApjuw/7s+HZfD6b2ty8n9SeCjvT/b8SuysjeStRBsDerAV3Y0qtT+8yVfVV9XhgGrBMRI7ttsqfgJmqehxwF3B9gf1co6pLVXVpnWs31wymsdH8X6YqXWV8NKDQl605FfnnXqKiTBlAuYQpiaBH9g6EL7iJsYE18jDG9O6QTqFUtQG4Fzi/2+/3quqBalHXAicMzvBMX501PpM3/fLM8VlePenAf03n5WHxsBPH+EyMB7idtpVcxcjjavp/Z+GCap+4o10aXbsoY2NBR70bY0zp9BrcRWSCiNTl/p4EXgWs67ZO58aEFwHPDeYgR6pWLyzmVazbUT6qsDst7E5Lny8+HlUV8KYpGcZGwsuiNZEw4+X4Wp/JCXhrfZqEwIHm2PXxgA/PTCECl01Lc3yNR8wJUyiPqvR574w08QFktcQceO+MdNj7NJcSuqjW453T0kOed7+/Isam8VWkD/VKt6NUHJkmMTX/lGJ8SpbK2WkocEOZMYdTX66YTQGuFxGX8MPgJlX9s4hcCaxS1VuAj4nIRYAH7APeVaoBjwReAH/aGeO5FpeIhD1Ml9V5nDW+9xuKtrY73Lw9RnuuA1Klq1xcn+bNP5iGnJQvSSkUBMqaf11Ly/WvkEw6tGcC2s6cwSn/u5BI1EFv2UbkU8+Q9BXfU6qOruP4609gQn2Y1XDoXSb7pngdwcOrORvwsftbeHRnlqgb/r988rgK3ju/98wODV4C/xbCnq4BMAYiFyMyBtVG8G4G9hK+RRxwL0Cco0r6eA6nPzVH4O6hHoU5FL0Gd1VdDSzO8/svd/r754HPD+7QRq47d0dZ1+Li68G6Lo81RKiNKEvHFJ7qaPfh51viZDpdiGzwhBu2JLigXakocszfXb2BW2/YTCYdkEmH0x5///02asfGOPvNU/mfjzxNuv3gdMiLzzTxuYsf5doHT0eG+lT6MPnUgy08sjNLJghTNQG+9XQbM6tdzp5W+BqQ6n7wf0t47nLAHvB+jrofBv9GoJEu017+H1B5DyLjS/BIjOmdpS0MMl/h6aZIt6qQYVriw/uLf5Y+2xzJe9kzUHjgoeINMG7+wcukuyWmp1MBf7puE3/4v5fJZrruOfCV3dtSrH+qseh+y8XeVMAD28PA3lm7Dz9a2158Y/8pwrP1zhRIg64C2uh5wdoH//GBDNmYAbHgPsiyQRiM82nL02y6sxZPOu4g7cxX2Le/+Dxuc0P+ujXplM+ure0EeUpDOo6wb9fo6Jq0Px0UvJlsd3tvF3ib6BncARS0ocA2mtvOmKFhwX2QxR2oyVv9UZneS5bIjKSfp9dpWGXy2GOKn/XPW5y/Kt+02ZUsO2cS8WTP/+psJuDoAtuVmxlVLm6e6aeIwPLJ0TxbdOLMIrx3rzsF5xjCefjuoiCz+zFSYwaHBfdBJgKvnpTJ5XiHQV5QYgJnTyh+49asioD6RNAlpTEqyoxkwDHziwf3D/7HMSQqXJxcvWERiCcdPvJfx3L+26czZmKcaPzgf3eiwuUNV8xkzMR4Px/pyBJzhS8uqSDZKQMoIlAZFf7p2F4uqMoxQC1dL1FFQY5FnOkgS+ga/F2gGpzut4MYc/hYm70SmFMZ8M7paR7YG2Fv1mFqwmfFWK/XQlwi8PZpaR5viPB0UxiFFtf4LKnzer3oedSiWr535wqu+cpzvLSmiWlzKvnAlfOZe1x4Zv79u0/j599Yz/237KCi2uXST83lzDfWD84DHiHePCfB1CqXa9a2s73VZ/nkGB9YkGByL5XMRCJo5F0QPAbBWpAYOCeALAhXcM8hlZ3Mun3P4gUBM6rrmVh1MiKlvVFPgwzoo6BN4ByDOLNKejwzslhwL5H6RMBbCuRDF+MKLBvjsaxIVk0+qTaf7/zLM7y4OpznXf9UI9/8+DP89+9Pprouym9/uIG//PQV3IjQ1pzlqs+uYeqRlQWnc8rV8snR3qdh8hCJgbsi/Onm+f2bqE/cwZya8KatiLOZR7Yrp9SfORhDzkuDF8G/6eAv/KdRfxy470cc+0JubFqmbFz3tXWsf7KRVJsf/rT6bHq+me995hmevH8Pv7v6ZTLpgPZWn7YWn5ZGjy+97TF8z+4WHYiM5zE5/luqoxmqolkqox5x12fRmMd4bu/LJTmmBgH4N+dZsheCu0pyTDPyWHAvE3f9aktHfvsBXlZ54M87+Mv1m0i19bzol80ErHnU+lsOxLr9L+FKzw/IuOPRkn6yREd9kfzZO4A+U6JjmpHGgnuZ6J7HfkDgK+0thesfdM+NN4fG1/zTZ44DjpSqrWKx9FX7JmZCFtzLxIlnT8Dpdl1QBI5ZNoazLp5KIs9FQ98LWHjy2MM0wvI0u24WEadnQG31Ioh7TImOOr/IspklOqYZaSy4l4kP/scx1IyNdeSzx5MOlTURPvHN4zjj9VOYv3QMicowwLsRiCccPvaNhSSr7Jr6QNTEKnhm/1m0ey5eEGY0tXoRXmqayqJxpQnu4kTAOS3Pkgi4F5TkmGbksXd2Eaqwsd3h+RaXmAPH1XiM72Nf0XY/7GS0NyPUJwIWVPtEcx+lvsLzLS4b2xxqIsqiWp/qvDc+9d3EqUl+eM9p/OjLa3lhdSNHHFXFB/79GKYcUQnA125axj/u2sVDt+2gZkyM8y6dxoyjqgd0zOFq7T6PWzam8RVePSPGkgmHnh1zKJZNOZGNjdPZ3vokLmnikXksnDAPpw9ZK6oB6HoINoJUg3McIr3/v4h7GipHgH8v0BreMOWciTix3H4zoGsh2A4yHpyFhO2Qe/dCo8cfNqRJ+XDu9BjLJlqYGIlEh6ih5dGJWr1m5qlDcuy+UIXfbY/xQqtLVnO1/gTOn5BhcV3xeerdaeGnmxN4GnY0iopS4SrvnZEi5sD1m+PsyThkVXBRHIG3Tk0zs6LwfOmp35xetCrk3h0pPvKqB2ht8ki1+cSTLrGEw3dvW8HU2ZX9fRpGnB+saeP7a9rJ+OEtZAkX3jInzpeXVg310HpQzYJ3A2E1ySzhzU8OuG9GnJkD2G8LeNcBqdx+o+G+I5cjMq7otjesb+frT7R1lNFIRuC86TFWHlvHVd8bXWmzw9Xd37rocVVd2tt6Ni1TwIutTi6whw2lAwRPhdt3x3ptHH3LzhipgI7iYVkVmj3hr3ui/KMhwu5cYAfwCdvR/X57fECNo6/+0lr27053ZMWk231aGrN8+19GT/bE5hafq9a0k/LDy4pK+A3qphfTrN7b/8YjJROsAvYQBmAIyxhkw4qSA3kx+HcDLZ32mwVS4N9adLM9qYD/fLyNlB9+u1SgzYM7Nmd4YY+1xRxpLLgX8Gyzm7cHqANsaCt8R2MmgB2pnj1LA4TnWyKsyVMxEsIStLsz/S+9++hduwi6fehoAM88tBcvOzoyKO7dmj8ApX24a/MwLJAWPEvXMsIHZIHd/d+vvkDetoq6BdXCZyYPbM/mLa7W5sGT24bh82eKsuBeQDg/nucNImFNkkKKhWdH6NLOrjMlvDu1v9wCgxJHEGd01GuPOpL3Be1IWFtm+Ck2lz2ANlgFtxWKvUKjBaKBU2SZGb7sv6yARTX5KzSicGSBptIQvgmOrPRxun0wuCjH13gsqfXyNI5WaiNasMl1X5z95qldCoMBRKLC8tdMwh2WgW3wnTs9lrcefsSBC44YhgXS3MXkrzZZDQwgRVWOpWeAd0DmIlL4LX96fSxvueqYCydO771blRleLLgXMC0ZsHxMlogo0VwP0Kgob5ma7vUs5sJJGWqj4TYHtq9PBKwcl+X4Wp+jKsO+ogd6i1a48JapA+st+t4vHc2RC6pJVLrEEw7JSpf6WZV87L8X9n+nI8y4hMM3Tqki7kJFJPyJO/CFJRXMqhnImXCJyHEgcwnP4CNADKiAyJsG1h3LPQNkEuEHx4H9jgH3/KKbVUWF76+sJulCZQSSbvj8fXRhkul1pc04MoPPsmV60ZgVXmp1iDpwVJVPvI8fh9tTwl27Y+zLCvXxgHMmZBnbKY1yV1rY3O5SFVHmVPodUzK+wlONLqubwq/si2s9jqvxWfmtMFvm2/+ymjt/sQXfU8ZNSfCV65Ywb8kYAFSVZx/dz8vPNTNtdiWLTh2HM0qmZDprSAfcszWLr8qZ9THG56llfzip7gL/IdC9IPXgnkKu5/zB5cEWkEqQOYTtint37dqtXLNWaPFcFtSl+frJY5ldV5Xbp4JuAd0FMhZkZscHRnOmiTW772VcfBtpP4ovR3P8xIPvxeZswD1bsqR8ZWV9lCkVLn9qjvC979YO2nNi+q+v2TIW3EtgQ6vDr7fFcxkHgoMSdeDd01NMiBd+vlXhF1vjbG4/mE0TFWVWhc93fzWRD38+y4Y1zT22+94dyzsCvBleNNiYq97oE15ZcYBILi1xQr/3+7H7N/KXV6o4OIeuOCi3vzbZEeDzac22sLflOsYn2khGwunFNi/C6n1HcsrUiwtuZ8F9+LBUyCGiCrfuiuGpoLk3XoCQDuDuPcW/2m5qd7oEdgjTKF9uc3no4UzewA7wb+9+YvAegBlc/m2EGTEHPtQDIAP+X/u9y/3t6W6BHQ6k637ukX1Ft31m931dAjtARcRj8biX2NO2s99jMsOPBfdBlg7CqZyewmmYYja2uQV7qP7+lsJNnPduTx3iKM3hoJoBCvRY1S393u+dWwoFcOHZ/cUvHCfdHV0C+wGZwGFz8/p+j8kMPxbcB1nUCVPv8kk4xafAKiOaN83SFaifUviDoVAapBlqEQq/xfpWCiCfGdWFOzxVRIrf05Dy4x01cDpzUJKR8ixHMVpZcB9krsDCGq9LH1QI585P6qW70oJqL28Wsgh84P2VFMpiO/fSaf0crSklESfMiOmRzx4FZ1m/93vK5HFURDpP9RygvH9+8dunx1csJht0fSF5gdCQSXBU3ejJrBoNLLiXwHkTssypCNMd406Y8ri41mNZXfHgXuHCpdPSVLphimRMlGo34LKpaSorHP77tyf1CPBHLqzmE984roSPxgyI+yqQOYR55/HwTzkOnBMHtNvfnlvZKcCHP+dNa+UDxxb/oJ9ddwzPNpxISzZKSzZKmxdhS2sNTuR1OO4wTBc1/dZruTcJS8ndR/jKjAA3q+pXuq0TB34GnEBYBekSVd046KMtgU1tDnfvjrIrE1ZoXDk2y8La8OynMSvctTvKS60uroRpiaePy3+LdmdRB948NUOzJzRmhXGxgGQf3zczkgGfPLKdHenwHH5yXDvy3xedOp47dr6Wv/5mC5vWtXDBu49g4rSDN5esumc3P/73dWx5sYWJ05O8+wvzOPWCKYf8nByKp/Zk+doTbTy7z2NcwuHDCxJcMifRa552ygt439+aeXSnRwCMjQvfXF7FafXhlMPdWzJ846k2Nrf4HFHt8unjKzhzau8Np5uzAf/7VBt/3JghUDhvWpTPLqlkXMIJ0wODJyB4GGgDmQLOOYgTPkeP7tjC159Msb6xmknJdj66wOMNc+YM6PkRiUDkjag2gzaCjEWkomO5BmvBv52wyJcAc8B9U699UI8aU80zl1Tz0Pa9bGrOcM70MUxIju/TmE6cchap7ClsalpPIlLJrLF9f4znLPgHb19+N2Ormnh59xT+794LeXbrkQDMm/wK7z/zFuZO3kJjWxW/fPhsblt9MsXv2x6Y6WN3csWZt3Dc9JdozST44+On8pt/nEWgdt7aayqkhO/SSlVtEZEo8ADwcVV9pNM6HwaOU9UPishbgTeo6iXF9jscUiFfaXO4cWu8S62XqChnT8iysNrj+xuTtPt0ZL1ERJmRDHj7tMNfZ6O3qpCP/XUXV777cdLtB+dc40mHT3zzOM6+eGpJxvTsPo9L7mzsUkgt6cKHj03y4WMrCm8InP6HfWxp7fna++P5tbzS4vPph1tIddpvwoXvnFrNOdMKB/hAldff1sgLjT6Z3NMQEZhc4XDnhXXEuA+Cf3CwoBZAFCKX8/iuLJffGyHlHzzfSbpZPr2okcvnzyv6WPpLg5fA/3WeJZOQ6HtLcsz++lNzhC0PPcXlp95GMnbw+Utlo3zmVx8i60f41tu/RyJ6cFl7JspNj57FLx4+tyRjmlC9nx+95xskoykOfBamslH+/tzxfPP2t5bkmMPBoKVCaqgl989o7qf7u/J1wPW5v98MnC0DusXu8LhnT7RHEa+sCn/fE+WJxgiZ4GBgh7DK4yvtDjvTw++hXXvlui6BHSDdHvDjK9cNrMJgEd9e3dYlAENYhfGHz7aT9gsf88nd2byBHeDLj7XwX0/23G+5Ox2NAAAgAElEQVTKh68/0Vp0PA/v9Hi5+WBgB/AU9qUD7t7SCsGjdA3sAB74D/CNp1q7BPbwsUT59jPVeH6JWhH6dxRYsBMNCmTZDBHB57Lld3YJ7ACxSJZ3n3Yb71hxBzG367JkLMtbTrqXWKQ07QbfsPQ+Ym6Wzl9yEtEsZxzzJGMrm0pyzJGkT99dRMQVkaeAXcBdqvpot1WmApsBVNUDGoHihaOHgV2Z/A8/o7C53clbvdEBdqWH31e+LS/mD3x7d6bIZkpTFXLtPi9vLReA7W2Fj/nQjsJv9g1NPlta82/7Skvxx7Fuv0e+AphtHmxt2Uf+l7uC7mB9Y/4bf9K+S0OmcBrqwOS/byG0uUTH7J84rUTcnh9yjsCsiduYM2kr+WaSVIUJ1aX5oJpfv4lonrTOrBdhxrgdJTnmSNKnKKWqvqoeD0wDlonIsf05mIhcISKrRGRVgz/09aHrChTqcoHJ8SBvBUeFARX4KpUJU/On1lXXRonGSvNhNLNAvZZAYWKRW/6PH1/4Us+UCofxifzfjIrtE2Bmddgxq7tkBMYnagnvEs1DxjKtMn8Adx2lJtb/tMXiihXjmlyiY/ZPhoq8RVIBtu8fx5Z9+e+2dR2ffa2lSbHcuHsKnt/ztRJ1PbY39O36Qzk7pHe9qjYA9wLdKxBtBaYDiEgEqCW8sNp9+2tUdamqLq1ze784VmpnjMvkTVk8eUyWE+q8XM75weUuyvhYQH1i+NVHv/xzRxHvdtU2UeFy6T/PHVgRqiI+trCCRLf4nnThrXPiVBTJvV8xJUZdLP/yL51QyccWJntcgE668InjilcmPL0+ypi406V0sgMkXeG8GTUgC+mZQxAB51Q+ucgl0X1awc3ynnn7iLklajPnnlVgQR3i9L80QSkERPj946fRnul6l3UqG+VnD57PjQ+dSyrbc9ntq0+iPVOaD8ffrjqdrN/1mOlshCc3zWVnkzV+7zW4i8gEyVU5EpEk8CpgXbfVbgEuz/39YuAeHaqiNYfgqKqACydlqHYDhDBtccXYLCvHeVRF4PLpKabEwp4+gjKvyuft0wZWvbFUznzjVD78tWOoGx/DdYWquiiXf+4o3nDFzJId86RJUb69ooqplWFArYjAu45O8IUlvbf1u+PCOmZWH3z5xR34j2UVrJgS49K5CT69uIK6mOAKjIkLX1hSwcWziweJiCP85rxaVk6J4kp4z8GJEyPcfF4tlVEJqyLKCShRVAWlDtw3Is40zpw2k68va2VSsg1XAqoiGT4wfz8fO+7oPj8fqu2oNue9xpHylG2tPtlONXXFORacM+j6NpwI7vu6bLsnFbA3NfQnFNff/2pu/seZtKbj+IHD7qZa/ucvb+WJjfNYs+VIvnbLO9jeMBY/cGjLxPjj46dy9T2v67KPuopmapItBY5waLbsm8gXf/N+Nu6ehB8IaS/CX59dytdueeeg7H+k68spyRTgeglL1TnATar6ZxG5ElilqrcAPwZuEJEXgX3AiLlUfWyNz4JqH0/DzIrOgTsTCCkNAwwKbb5Q5DrhkHv1ZTM4/+3TSbX5JCrckp2xd/aq6XHOmRYj5UPcBaePx4wKzK5x2dIS4ABjEg7Tqg6eru9LKSlfiUoYGPelFVXt9TFNTDpce2YNGV9RIN7pND4TCF/6xzJu3XQciYiPSIwvnVDB62eFyxuy9bRm24gIZIIY+zLTu1xQL0S1FfxbQF8hTPurRN0LEWcGfqD811Nt3Lg+hQCuI3x0YZL3zQ+/hYi7HNzlaNAGxBDn4FvyxUaPTz7YwguN4XTSvDqXb62o5sghKl+sOPz8ofO48aFXEYtmSWdjdE5zfPSlBTz60jHEI1kyXgTt9KF15MStfPa1N1I/Zi+C8sLOaXz9T5cN+Az72a1H8oHrPkMsksXzXUuB7MSqQhbQmBV+uDHRpYiXEDbU+NDM1GE/e+8tFXKkecudjaze2/UCaNKF351fy71bM3zvmfYeKZafXlzB5fP63zTiEw80c+fmDOlux7zmjBoa0gGfebilyzETLlw6N8EXTyj8TURVwfsxYS/UzmfXUYi8j28+Hee6dT0fy5XLKnnjkYW/ibRmlZV/2E9jRjsmBoXwW8z9rx9D4jCXnBhIVcjqRBvXf+CrJGOpjtIcfiDsb63hnT/6In5gN08dCqsKOUBPNER6dKVRwkbXm9vtaRuIFxs9nt3XM7MlE8B161JcszbVowl5uw8/XNP/rJWGdMAd3QL7gf3+YE1bjw8TCNMvf/FCqmhaJ7od2E/XwA7go97j/PT5nvtt9+GqXh7Lba+kyQTa5RqmAilfuX3z0CcjHIqzjlmF6/hdai65jlIRS7HsyOeGbmBlzqJUAfuygl/gK3mjNwwn3UeQba0BkTzV1XyFjc0+DZn8wXRfuv/fMnengoIdtLa0Buxszz+nHSi05CvV2aGR/HdgBvjsJ10gQWd3geMdsK01oC1PtYqUB9sLpIoOV1Pq9na5uekA1/FLliZpLLgXNCMZ5Ol1Gp6fTRmG2TIjyfwxETJ5zobjDpw0Mcqs6vwvyzm1/f/6PqPK7XFuDeFF1xPGRzh2bP7LT1VRYUy8WEf0yeRPsYwQkemMT+R/LMeMKX65a+G4CBV5VklEYOG4kTWN8dy2mbRlembHBeqwfsf0IRjR6GDBvYBFtR5JV7s0uo6KMrfSZ3xsGF9VHQEmJB0umR3vku7oClRGhXfMS/ClEyp7pFgmXIrOffcm7gqfWFjR5ZhObr8fWVjBZxaHyzqH8aQLn19cUfQiscgYkPl0zU1wgAS4x/OlE3qmiyZc+Ozi4uUZVk6JMqvaJd5p27gDc2tdlk8eWf1MH1y/kD1NdWS8g89RKhtl3fYZrNs+YwhHVt5KlMA78sUceN+MFPftjbKuxSXqwNJaj2W9lO01ffPlEyuZN8bhkR2v4NBObWI6H1hQx7iEwxlTY1x3Zg3/+UQrLzf7zKlx+dySSpZOPBjUVNtAtwFJkPo+ZQa975gk9ZUOP3i2nd3tASdOiPLJRQebZ//63Fr+84lW1uzzmFLh8pnFXYuVqaZzTTaiINPCkr4A7gXgTwbNlTeQeeCejkiC1xwBNTHhO6ub2NSszB/j8M/H13LcuINvvT2pgNV7PMYnHRaODbOcXEf41bm1/HBNG394OQMCb5wV54MLkn3OSNrc4rO+wWdmtcvsAXzrGSgviPDxn3+MS0+5mzPmP4kXuNy++iR++9gZdG4TOL9+E9WJNtZunUlLuviHn+mdZcuMEOWWLaO6D7xfAgcuLAbgrETck0l5yofvb+bRnWEFzmwAp02J8t1Tq4m7gvoPQfAA4b3EAVAJkbeFZ9H95AfK5x9t5c8b00Rd8IJw6uTHZ1ZTE3NQfzUEt+eOqYTZMJcgMjlscO39CsgQBisfnFch7uLwA8H/Te6DyAW8XPC/CBD+9+l2fvJcO1E3nN+vr3D46dk1TKnofzDOBsqnHmzhr1szxHLP35IJEa5eWRPm+/dDKXuo1tft4T/fcjU1yTYChKjj8bMHzufmx84syfFGOsuWMcNWmD74S8KLkZncjwfB/Wiwia8/2cojO7KkfGjJQtqH+7dn+ebTbWiwAYIHw/VJExYCawTvpgEVSLtuXYq/bEqTDsJjpnx4Zp/H5x5pCYN3cHunY2aAVvB+iQbZ3GNpyf0+nXssd6G6PSznq1s7beuDrofgYe7YnOGn69o7jtnmwcvNAR/6e7GaM737/jPt3LM1Q9qH5txjWbXL48pVxQuvDQ3lq2++hok1DVTE01TFU8SjHpetuJNFM14c6sGNaBbczeGn24G2PAuyqP84N7+U7pGymPbh1y+mIVhFz8qOCjQBu/s9pBvWp3pUoswGcM/WLO3p1eS/aOofnIrJt8x7AnRdnm09CB7np+t6pnz6Ci80+mxu6X8lyl+80POxZAK4ZWMav3t+7xCbM2kLYyqbcbq1oIxHM1y4+IEhGlV5sOBuhkCawi+99h6BqWOJp6CF8sMFtP+NwoulO6b8DPmrZilovg+p3DLa6Jn/fkCGxgIpn65Ac4FlfdHq5d/W0/BnOKmMp/CDnq8FR6AmWei5NX1hwd0cflJPofRBceaxJE/VSCGsE4Mzj/x5ABp2VuqnlfXRvG+G+kqHusQswjYG3QXgLCL/Y4mCOx/IV51QQGbxqumxvFUsXRHm1vV/zv2USdG8mffz69wu5RiGg+e3z8hbSjiVifLA89bTdSAsuJvDTiQOztl0DZhRYCw4i/i3ZZVURui46SjmhGmSXzmxEpwlQF2nbYWwsuOrCBuF9c+nj6+gNi4dqYcRCVMhv35SFeLMy+WzdxuvsxxxJoGzsucymRimSLqvyS078FbL9VJ1z+J98xNMqnA6UiVdCdMk/+OkSqJ5bvLqqy+eUEl1VDo+OKK5om7/cVL+mvVDKZWNc/VfLyKVjRIE4WNuz0TZ3jiOO545aYhHN7JZKqQBYGdbwG2vpEn7cNa0KHNrS/vSEPcE9mUmc9umrTRmApZPrmLRhHmIRJk/Bm6/oI4b1qd4dp/HwrER3jEvweRcBonPO7h9yyM8vUeoivq8/sjpzKg5qk/Hbc0qt72SZmd7wJLxUU6eFEFEqK90ufOCOm5cn+Kx3Vlm17hcfnSSmdXhMdW9FHQtBGuBGDiLEWdm7rGcgsrUsD8rKXDmgyxAxAWZivJu8O8G9h3s2yrV1MTgz6+p46YXU/x9W4YplS6Xz0swv5cbnHozq8blzgvD5++pPVmOrovwznmJLoXZhpPbVi9nw+6pXLj4QcZUtPDgC8dy97MnkvFGVj7/cGOpkCNEKVMh/7QxxWcfCTMp/AAiDrxzXoLPLu7/TUO9eXhHlvf/vQnV8MJlzIFzpsX45oqqonncmUyGDz+whkd21ZP2XeKuj4jy1RN3cdGRi4oe87n9Hpfe1YSnSsrL3e05NsJ1Z9WUbLpCtRG86zmYFRQDaiDyTsLe8yNDKVMhzaGxVEjTJw3pgM8+0kraDzNSPA1T5254PsWTe0rT+zIbKP90fzPtXngsX8NiWndvzXD7K8WLYv10/RM8squedj9KgEO7H6XNi/HvT4wjkym8rarykfubacoqbV54mbPNg6f3evzs+VK10QP8vwCthIGd3J/7wf9b6Y5pDBbcR72/bcuSr3ps2oc/bSxN9cEndnv4eZJI2j347YZ00W3v2VpJu9/z63rad/nrtvUFt9vcErAjT1/XlA+/3VCax6nq5Wq8d/927IdTPMaUkAV3k5cCQzFj11sadl+aZxyq4d8zzJhDZ8F9lDujPpo39znhwoUzS9PndvH4CPmSQZIuXDw7XnTbs+pbSLo9p4tijs/Z9YUvqk6vcpiUp8F2woU3HVmaxykSAZlOz5LAbq7YmDGlY8F9lKuLO/znSZXE3bDq4IF0vEuPSrBkQmmyFWKucNXKapJueKywiTWcOTXGq2cUD7TvnreEkyZsJ+lmcQhIulmSbpZ/XbKHWKzwtiLCVadVUx0VKiJhuK3IXVC9/Oj+d3fqlXsBUEF4IZXcn3XgWt0UU1qWCml43awEyyZFuW1TpiMVcl7dwF8afhB2DbplY5qYI7xlTpxTJ0cREVZMjnLf68dw6ysZGtIBp06JsmhcpKO64/Y2nxueT/Hsfo/jxkZ4x7wkE5MOsViM7552LNc9t4ZtrW3EIsKZ9bM5fdrxvY7nmLERHnjDGG7dlEuFnBBl+aSDx1Rtg+DJ3Dz5OHBPHFAxMgCRWjTyT6DPg+4DmQQy52BFSWNKxIK7AWBKhct75g/eGWygygfva+aRndmOjkL3bs3wtk49SccmHC47qmc64Lr9Hpfc1UTGVzIB/GOnxw3r09x8Xg31lS5vurOVLS0zaPfDs/7fbIB/OzHFxbN7Ty2sigpvmdNzPdUm8H5CRxEzNoH3NOpegjgDqzkeTs8sGNA+jDlUdvpgSuLBHdkugR3CdMcbX0ixqbl4UawvP9ZKSzYM7BAWvWrJKv/2WCu/XJ9ic4vfUXArIMx4+X+rWsPaM/3l30tYfvjAgAMgC/5fBlRt0pihYsHdlMS9W7N5e4AK8OD2wvnzqsoTu3tuqMA/dnncvjmTt7CYK8IzewfQSEU3kL84WBMHa84bM3JYcDclURsT8vWFcAWqYsXTGbu3pev4fUSoK9DP1Felupf9FlfsQq7NXpqRx4K7KYk3zIrjFnh1nTOteFbLG4+Md+kdChB34ZLZcd5xVKJLH1QIX8STkw5HD6CSIs4J9AziDshsREqTKmlMKVlwNyUxo9rlv0+pIumGFzGrouHZ/E/OrKEi3y2xnXx+SSXLJkZJuFAVDc/kl0+K8s/HV7CyPsYHFySJOeGyykhYlvfHZ9b0qY9qQc4ykKMJA3ycsLLj5FwqozEjT6/fN0VkOvAzYBLhpOQ1qvqdbuucAfwReDn3q9+p6pWDO1SjqqDPgv8I0AYyE9yViNT1uu3u9oDvrG7jnq0ZqqIO7z46ziVzEn1uttwfK6dEuWROnD9uzBAV4bJ58S6NoQtJRoTrzmjkpYZVbGgKmFvrMrN2KeLUAPCRhRVcOjfBk3s86uLCkvGRgQV2CFMTIxehejroTpA6RCb2adtAlRvXp/jZ8ylaPeVV02J89LgKxidKd+4UvhbWgv8wh/paMKNDXyYTPeCfVfUJEakGHheRu1R7FMe4X1XtNKeUgvsg+Acdbd30WfBeRCPvJ/yvya8xHXDhrQ3sTyuews52n68+3saafT5fLVGN74yvvOmORja3BB1ZLz9Yk+KxXT4/Paum6LYabAD/ZmZXe8w+8LD89Shv6SizOzbhcHaR6Z3+EqkFObTqh599uIXbXsl0ZPD8+sV0WATttXVU5+vGMRiC+yHo1OKv47XwPkSKP79mdOj1laeq21X1idzfm4HngKmlHpjpxvG6vpmB8ItUJncmX9gvXkjRlNUuZQbaffjdhjTb2/rfq7OY2zdn2N52MLDDgUbNWVb3ltXi38XBlMQDvFxN9OFlc4vPXzZluvRCzSo0pJXfvFS8CFp/qaYheIT+vBbM6HFIpxUiMhNYDDyaZ/EpIvK0iNwmYndsDLpkK2EXn+6C3B2VhT2yK0s6TwyPubB2X2mC++O786dCBlA0uIc55XsLLO1/A+xSeWav19ExqrOUD4/uLE3JZHQP/X0tmNGjz8FdRKqA3wKfUNWmboufAI5Q1UXA94A/FNjHFSKySkRWNfilKbNatjJx8vfqBHqZZ51Z5ZKvF4UfwJSK0kwbzKhy86Y0RqT4McO580J3ylYMytgGU32lk7cFdlTgiJoSdT6Savr7WjCjR5/e2RI2p/wtcKOq/q77clVtUtWW3N9vBaIi0qMzsKpeo6pLVXVpnWvpZYckm8hVGOweMCLgnFJ008uPTvY4u4wKzK51OWZsaXK43zAr3qNOvCNh5szp9b0UJHNOomdD6mivj3MoLBoXYVql2+OxRhy4bG5pOi2J1IAcQX9eC2b06DW4S3gq9WPgOVX9ZoF1JufWQ0SW5fZb6Lu16S/3jSBzUFyUCFAJzkWIU190syNrXK45vZopuWbMMQdOnhzlujNLd+FtbMLh5+fUcmSNQ0zCD5Pjxka46dxaIr01f3ZOAedEwgCf+3FOzv1ueBERbjinhhMnRog6YT7+1EqHa8+sYUZ1CXuWum8AmUsY4CNABTgXIo5dDjOhvpy2rQDeATwjIk/lfvcFYAaAql4NXAx8SEQ8wnu136pWkGPQZYIYX3/yPG7ddApxN0NFtJZ/O7GKkyb1vu2KKTHuf32U7W0BlRGhNl76WxyqosL4hMPG5gAHmJAUkr3kuENuasY9A3VOBVqAqrD41jA1PvdB1pAOaPOUKRXOgFMzeyMSg8gbUU0BaWCAef6m7PT6jlHVB+jZbaD7OlcBVw3WoEx+//JQC/dszZDy44Q32gS8594mfnd+bZ9K9IoI9ZUlPJvspDkTcPEdjTRmFCW8kHrv1iyX3NnInRfW9Sm/PgzoI2cOuS7uUFe818igC5tsj5xG2+bwsTtUR4hdnsvdW3oWzcoE8KNnh19hqz+8nCbta5dSXJ7CrvaAh3aUKIvEGNPBgvsIsSUbJZ4n5SVQeKGxNOmMA/Fio98l9/sAT+Hlpnz5JcaYwWTBfYSYGcuQ8XtexnCFPt3Sf7gdOy5CRZ5huQJHjzk8U0PGjGYW3EeIsW7AxbPjPSoixl244pgS9gDtpwuOiFMTky4pgjEH5tS4LJ0w/D6MjCk3FtwHQBX2ZIRtKYc8J9WD7itLK/nowiQTk5KrlBjhN+fWckSnlLv96YAn92TZ0z60Ux/JiPD78+t4zYywumNlBC6ZHePn59SWbVbHS40+q/d6eb9hGXO42SlUP+3LCL/eFqcxKwggAhdOyjC/unTz364jfGBBBR9Y0PNOzUCV//dYKze/lCbmChlfOW9GjP86uYpYvttTD4MXGn0e2OHhSlj55G/bPd4212femPJ62W1u8Xn/35rZ0uLjSpiV9PWTKzl/xmFOnTGmEztz7wdVuGFLnL0ZIatCRoV0IPxhR4zd6aEJpP+3tp3fbUiTDqA5q6QDuHNzhv95qm1IxrOjzecDf2tiX1pp9aDNg80tAZfe3US6jM5sA1Uuu7uJl3IXkFu88Pn/54daWN8wgLZ/xgyQBfd+2NTukPIF7Zb+7ys83jg0Z6U/WZfqkZ2S8uGXL6SGpMHz7zek805VZQPl3q3lU1do1S6P/emgR32ZbBBW4zRmqFhw74dWP//ZuSI0e0Nz5t6UyR/A034YaA63Xe3apdzvAb7CnlT5nLnvTQd57/DzFba3WcqnGToW3PtheiLIW5MvKsqcyqHJOV88Pv83htm17pDMuS+fHM2bCglw4sTymXNfMj6a98Mz6cIZvRVIM6aELLj3Q01UWVrrEZWDZ6ARUeqiyrElvKBazJdOqKQiQkdpX0fC3qNXnlg5JOM5a2qUeXWRLmV/ky6cNz3Wp1IJI8WkCod3zkuQ7PSQ4g5MrXR5/SwrC2CGTvm8yw6zV03IMj0Z8FhDhHQAC6p9ltblb9xwOBwzNsItr67jR2vbWb3X46halw8tSA5ZZorrCDeeU8OvXkjx+5fDDJ63zUnwulkjt9Tz9jaf+7dlSUSEs6fGqIyGn6SfXVzB4vERfrY+RVNGee0RMS47KtmnImnGlIoF934SgfnVfklTHw/VrBqXr59cmp6o/RF3hcuPTnL50cPvJqtD9YM1bVz1THsu1RG+CFx9eg0rJkcREc6bEec8S300w4hNyxjTi6f3ZPn+mnbSAbT5dKR2fujvTbR75XNx2JQXC+7G9OLmDWkyeb6gCXDf9vJJ6zTlxYK7Mb1Ie5q3T6pC3qBvzHBgwd2YXrzmiHjetE4vgFOnWLqjGZ4suBvTi9Pro5xRH+sI8G4uzfRfl1Yw5jC0KzSmPyxbxpheiAjfPbWKh3Z63PlKmsqo8IYj48yttbePGb7s1WlMH4gIKyZHWTHZpmHMyGDfKY0xpgxZcDfGmDJkwd0Y06uV9db3dqSxOXdjTK9qm9Pc+cX0UA+jJM796rihHkJJ2Jm7McaUoV6Du4hMF5F7RWStiDwrIh/Ps46IyHdF5EURWS0iS0ozXFPMS40+//JQM+f/uYGP3t/M2n3W5s2Y0aov0zIe8M+q+oSIVAOPi8hdqrq20zqvBubmfk4Cfpj70xwma/Z5vO2uRtJ+2AXopUafe7dmuPbMGk6eZOl7xow2vZ65q+p2VX0i9/dm4DlgarfVXgf8TEOPAHUiMmXQR2sK+urjrbR5dPQtDYB2H77yWOuQjssYMzQOac5dRGYCi4FHuy2aCmzu9O8t9PwAMCX01J78UzAbGn0y+TpVG2PKWp+Du4hUAb8FPqGqTf05mIhcISKrRGRVg2+lUgdTbSx/15+4y5B1hzLGDJ0+ve1FJEoY2G9U1d/lWWUrML3Tv6flfteFql6jqktVdWmdO3LbrQ1H75mfINktFTnhwqVzE4hYuzdjRpu+ZMsI8GPgOVX9ZoHVbgHemcuaORloVNXtgzhO04v3zU9yyZw4cReqoxBz4DUzYnx6ccVQD80YMwT6ki2zAngH8IyIPJX73ReAGQCqejVwK/Aa4EWgDXj34A/VFOOI8K9Lq/jYwgo2tQRMrXQYl7D5GGNGq16Du6o+QNhRrNg6CvzTYA3K9F9t3OE4qzFuzKhnUcAYY8qQBXdjjClDFtyNMaYMWXA3xpgyZMHdGGPKkAV3Y4wpQxbcjTGmDFlwN8aYMmTB3RhjypAFd2OMKUMW3I0xpgxZcDfGmDJkwd0YY8qQBXdjjClDFtyNMaYMWXA3xpgyZMHdGGPKkAV3Y4wpQxbcjTGmDFlwN8aYMmTB3RhjypAFd2OMKUMW3I0xpgxZcDfGmDJkwd0YY8pQr8FdRH4iIrtEZE2B5WeISKOIPJX7+fLgD9MYY8yhiPRhnZ8CVwE/K7LO/ap6waCMyBhjzID1euauqvcB+w7DWIwxxgySwZpzP0VEnhaR20RkwSDt0xhjTD+Jqva+kshM4M+qemyeZTVAoKotIvIa4DuqOrfAfq4Arsj9cx7wfD/HPR7Y089tRwt7joqz56d39hz1biieoyNUdUJvKw04uOdZdyOwVFVL9oBFZJWqLi3V/suBPUfF2fPTO3uOejecn6MBT8uIyGQRkdzfl+X2uXeg+zXGGNN/vWbLiMgvgTOA8SKyBfgKEAVQ1auBi4EPiYgHtANv1b58HTDGGFMyvQZ3VX1bL8uvIkyVPJyuOczHG4nsOSrOnp/e2XPUu2H7HPVpzt0YY8zIYuUHjDGmDI244C4irog8KSJ/HuqxDEcislFEnsmVglg11OMZjkSkTkRuFpF1IvKciJwy1GMaTkRkXqdyIk+JSJOIfGKoxzWciMgnReRZEVkjIr8UkcRQj6m7ETctIyKfApYCNVbyoKfDkYo60onI9YQlM64VkRhQoaoNQz2u4UhEXGArcLqxRQYAAAIMSURBVJKqbhrq8QwHIjIVeAA4RlXbReQm4FZV/enQjqyrEXXmLiLTgNcC1w71WMzIJCK1wErgxwCqmrHAXtTZwEsW2HuIAEkRiQAVwLYhHk8PIyq4A98GPgMEQz2QYUyBO0Xk8dwdwaarWcBu4Lrc9N61IlI51IMaxt4K/HKoBzGcqOpW4BvAK8B2oFFV7xzaUfU0YoK7iFwA7FLVx4d6LMPcqaq6BHg18E8isnKoBzTMRIAlwA9VdTHQCnxuaIc0POWmrC4CfjPUYxlORGQM8DrCE4V6oFJELhvaUfU0YoI7sAK4KDen/CvgLJH/397d6jQQhFEYfr8EBUFjEDjugBBsKQmXgEShegHcD6AaalH4muLAQQIV/FxCSQ6ig9om1H2zw3nU7qqjzs5MdmfiKjdSfcqoAkmfwAQ4yE1UnTkwlzQt92OWZW9dp8BM0kd2kMocAy+SviQtgFvgKDlTR2/KXdKlpF1JeyyniveSqntbZoqIrYjY/r0GToCVh6z8V5LegbeI2C+PBsBjYqSaneElmVVegcOI2CxbrwyAp+RMHesc1mH9sQNMylY/G8CNpLvcSFUaAddl2eEZOE/OU50yOBgCF9lZaiNpGhFjYAZ8Aw9U+Kdq7z6FNDOzv/VmWcbMzNbncjcza5DL3cysQS53M7MGudzNzBrkcjcza5DL3cysQS53M7MG/QC280r+x/0PvQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dt_clf = DecisionTreeClassifier(max_depth=10)\n",
    "dt_clf.fit(X, y)\n",
    "plot_decision_boundary(x_train, y_train, lambda x: dt_clf.predict(x), step=0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.672566371681416"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt_clf.accuracy_rate(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5945945945945946"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt_clf.accuracy_rate(x_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 以上是  欠拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dt_clf = DecisionTreeClassifier(max_depth=999999999, min_samples_leaf=5)\n",
    "dt_clf.fit(X, y)\n",
    "plot_decision_boundary(x_train, y_train, lambda x: dt_clf.predict(x), step=0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8407079646017699"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt_clf.accuracy_rate(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8648648648648649"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt_clf.accuracy_rate(x_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dt_clf = DecisionTreeClassifier(max_depth=10, min_samples_leaf=3)\n",
    "dt_clf.fit(X, y)\n",
    "plot_decision_boundary(x_train, y_train, lambda x: dt_clf.predict(x), step=0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8230088495575221"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt_clf.accuracy_rate(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8378378378378378"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt_clf.accuracy_rate(x_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "best_max_depth=1, best_min_samples_leaf=1, train_accuracy=0.8230088495575221, test_accuracy=0.8378378378378378\n",
      "CPU times: user 20.4 s, sys: 39.4 ms, total: 20.5 s\n",
      "Wall time: 20.5 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "train_accuracy = 0\n",
    "test_accuracy = 0\n",
    "for i in range(1, 100):\n",
    "    for j in range(1, 10):\n",
    "        dt_clf = DecisionTreeClassifier(max_depth=10, min_samples_leaf=3)\n",
    "        dt_clf.fit(X, y)\n",
    "        train_acc = dt_clf.accuracy_rate(x_train, y_train)\n",
    "        test_acc = dt_clf.accuracy_rate(x_test, y_test)\n",
    "        if train_acc > train_accuracy and test_acc > test_accuracy:\n",
    "            train_accuracy = train_acc\n",
    "            test_accuracy = test_acc\n",
    "            best_max_depth = i\n",
    "            best_min_samples_leaf = j\n",
    "print(\"best_max_depth={}, best_min_samples_leaf={}, train_accuracy={}, test_accuracy={}\".format(best_max_depth, best_min_samples_leaf, train_accuracy, test_accuracy))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
